package com.winit.openapi.wh.utils;

import java.math.BigDecimal;

import org.apache.commons.lang3.StringUtils;

import com.winit.openapi.constants.ErrorCode;
import com.winit.openapi.exception.ApiException;

/**
 * 
 * 精度校验工具类
 * @version 
 * <pre>
 * Author	  Version		Date		Changes
 * dinghua.an	1.0  		2015年11月10日 	Created
 *
 * </pre>
 * @since 1.
 */
public class PrecisionValidateUtils {

    /**
     * 校验BigDecimal精确位数
     * 
     * @param big
     * @param key
     * @param value
     */
    public static void precisionValidate(BigDecimal big, String key, int value) {
        if (null != big && big.scale() > value) {
            throw new ApiException(ErrorCode.FIELD_DECIMAL_POINT_BEYOND, key, value);
        }
    }
    
    /**
     * 校验BigDecimal最大值
     * 
     * @param big
     * @param key
     * @param value
     */
    public static void precisionValidateMaxDigit(BigDecimal big, String key, int digit) {
        if (null != big && big.precision() > digit) {
            throw new ApiException(ErrorCode.EXCEED_MAXIMUM, key);
        }
    }
    
    /**
     * 必须是数字类型
     * 
     * @param parma
     * @param key
     */
    public static void validateIsNumber(String parma, String key) {
        if (StringUtils.isNotBlank(parma)) {
        	BigDecimal big = null;
        	try{
        		big = new BigDecimal(parma);
        	}catch(Exception e){
        		throw new ApiException(ErrorCode.NOT_NUMBER_ERROR, key);
        	}
        	
        	if(big.signum() == -1){
        		throw new ApiException(ErrorCode.CAN_NOT_BE_NAGETIBE, key);
        	}
        }
    }
}
